/**
 * Copyright (C) 2008 Huascar A. Sanchez.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

/**
 * A lightweight resource injector framework built on top of Guice.
 *
 * <p>
 * To use this framework, simply extend the
 * {@link ResourceModule resource module} class to a concrete class and then
 * use the {@link ResourceModule#getSource() getSource method} in your code
 * to specify the location of your resources.
 * </p>
 *
 * <pre>
 * class ConcreteResourceModule extends ResourceModule {
 *     public Object[][] getSource() {
 *         return new Object[][] {
 *             new Object[]{getClass(), "resource.properties"}
 *         }
 *     }
 *
 * }</pre>
 *
 * <p>
 * Then, annotate the elements that you want QuickMix to inject the appropiate
 * resource type.
 * </p>
 *
 * <pre>
 * class SomeClassCalledFoo {
 * 	  Image myImage;
 * 	  @Inject
 * 	  SomeClassCalledFoo(@Resource(key="refcard.image") Image myImage) {
 *      this.myImage = myImage;
 * 	  }
 *
 * 	  Image getImage(){
 * 	    return myImage;
 * 	  }
 *
 * }</pre>
 *
 * Once you have the resource locations defined, and the target objects annotated, you can go
 * ahead and install the just implemented {@link ResourceModule resource module} in an
 * existing module and let the {@link com.google.inject.Guice Guice}'s magic begin.
 *
 * <p>
 * You can get more information in regards to how to use this framework in more detail
 * by looking at QuickMix's main artifacts:
 * </p>
 *
 * <dl>
 * <dt>{@link Resource resource annotation}
 * <dd>annotation that specify where the loaded resource will be injected.
 * <dt>{@link ResourceModule resource  module}
 * <dd>resource module where users can defined resource locations.
 * <dt>{@link Resources resources utility}
 * <dd>a utility responsible for loading the resource file. 
 **
 * @author huascar.sanchez@gmail.com (Huascar A. Sanchez)     
 * @version $Revision$ submitted on $Date: 2008-09-13 19:46:07 +0000 (Sat, 13 Sep 2008) $ by $Author: huascar.sanchez $
 */
package com.gotobject.inject.resources;